#!/usr/bin/python3.8.9
# -*- coding: utf-8 -*-

# @Author  : Tina Yu
# @Time    : 2021-12-2 14:34
# !/usr/bin/python3.8.9
# -*- coding: utf-8 -*-

# @Author  : Tina Yu
# @Time    : 2021-11-10 16:06

import pytest
import yaml

from homework.task_pytest.common_functions.calcFunction import CalcFunction
from utils.my_logger import log

"""
存放一些公共的函数
"""


def pytest_collection_modifyitems(items):
    """
    测试用例收集完成时，将收集到的item的name和nodeid的中文显示
    :return:
    """
    for item in items:
        item.name = item.name.encode("utf-8").decode("unicode_escape")
        item._nodeid = item.nodeid.encode("utf-8").decode("unicode_escape")


def read_yaml_data(data_file_name, level):
    with open(f"D:/python_workspace/autotest/homework/task_pytest/datas/{data_file_name}", encoding='utf-8') as f:
        yaml_datas = yaml.safe_load(f)
        level_datas = yaml_datas.get(level)
    return level_datas


@pytest.fixture()
def get_calc():
    calc = CalcFunction()
    return calc


@pytest.fixture()
def prepare_data(request):
    log.info("\n ************************开始计算**************************")
    datas = request.param
    yield datas
    log.info("\n ************************计算结束************************** \n")


@pytest.fixture(scope="module", autouse=False)
def start_test():
    log.info("\n ========================开始测试==========================")


@pytest.fixture(scope="session", autouse=False)
def end_test():
    yield
    log.info("\n ========================结束测试==========================")

# # 这个是使用conf文件定义log时使用的，文件名称动态获取。
# @pytest.fixture(autouse=False)
# def pytest_configure(config):
#     # 返回当前时间
#     current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
#
#     # 返回当前目录
#     current_path = os.path.dirname(os.path.abspath(project_path))
#     # 指定分隔符对字符串进行切片
#     path1 = current_path.split(project_path)
#     path2 = [path1[0], project_path]
#     path3 = ''
#     # 在该路径下新建下级目录
#     new_name = path3.join(path2) + '/logs/'
#     # 返回当前时间的年月日作为目录名称
#     dir_time = time.strftime('%Y%m%d', time.localtime(time.time()))
#
#     # 判断该目录是否存在
#     is_exist = os.path.exists(new_name + dir_time)
#     if not is_exist:
#         os.makedirs(new_name + dir_time)
#         print(new_name + dir_time + "目录创建成功")
#
#     else:
#         # 如果目录存在则不创建，并提示目录已存在
#         print(new_name + "目录 %s 已存在" % dir_time)
#
#     try:
#         # 如果case组织结构式 /testsuit/featuremodel/xxx.py ， 那么得到的相对路径的父路径就是项目根目录
#         # 定义日志文件的路径以及名称
#         log_name = new_name + dir_time + '/' + current_time + '.log'
#     except Exception as e:
#         print("日志路径获取失败 %s" % e)
#     config.option.log_file = log_name
